home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / c / cppmatrx.zip / MATRIX.ZIP / MATRIXC.OLD < prev   
Text File  |  1991-01-27  |  3KB  |  155 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <iostream.h>
  5. #include <stdarg.h>
  6.  
  7.  
  8.  
  9. class  matrix  {
  10.       int **matrix_data;
  11.       size_t matrix_size;
  12.  
  13.       public:
  14.          matrix (size_t vector_length, ...);
  15.          ~matrix (void);
  16.          size_t get_matrix_size (void);
  17.          void print_matrix (void);
  18.          int elem (size_t i, size_t j);
  19.          void put_value (size_t i, size_t j, int value);
  20.  
  21.  
  22.          friend matrix operator+( matrix&, matrix&);
  23.          void operator= (matrix &);
  24.    };
  25.  
  26.  
  27. matrix::matrix (size_t matrix_length, ...)
  28. {
  29.    va_list argptr;
  30.    int value;
  31.    int row, column;
  32.  
  33.    va_start (argptr, dummy_arg);
  34.  
  35.    // allocate space for the new matrix
  36.  
  37.    matrix_size = matrix_length;
  38.    matrix_data = (int **) calloc (matrix_size, sizeof (int));
  39.  
  40.    for (row = 0; row < matrix_size; row++)
  41.       matrix_data [row] = (int *) calloc (matrix_size, sizeof (int));
  42.  
  43.  
  44.    row = column = 0;
  45.    while ((value = va_arg (argptr, int)) && ( row < matrix_size)) {
  46.          put_value (row, column, value);
  47.          
  48.          if (++column == matrix_size)   {
  49.                column = 0;
  50.                row++;
  51.             }
  52.       }
  53.  
  54.    // initialize the rest of the array
  55.  
  56.    va_end (argptr);
  57.  
  58.    cout << "\nSuccessfully created object Matrix.\n";
  59. }
  60.  
  61.  
  62. matrix::~matrix (void)
  63. {
  64.    free (matrix_data);
  65.    matrix_size = 0;
  66.    cout << "\nObject Matrix destroyed.\n";
  67. }
  68.  
  69. size_t matrix::get_matrix_size (void)
  70. {
  71.    return matrix_size;
  72. }
  73.  
  74. void matrix::print_matrix (void)
  75. {
  76.    size_t i, j;
  77.  
  78.    cout << '\n';
  79.  
  80.    for (i = 0; i < matrix_size; i++)   {
  81.          for (j = 0; j < matrix_size; j++)
  82.              cout << elem (i,j) << ' ';
  83.  
  84.          cout << '\n';
  85.       }
  86.  
  87.    cout << '\n';
  88. }
  89.  
  90. int matrix::elem (size_t i, size_t j)
  91. {
  92.    return *(*(matrix_data+i)+j);
  93. }
  94.  
  95. void matrix::put_value (size_t i, size_t j, int value)
  96. {
  97.    *(*(matrix_data+i)+j) = value;
  98. }
  99.  
  100. matrix operator+ (matrix &m1, matrix &m2)
  101. {
  102.    matrix temp (m1.matrix_size,1,0);
  103.    size_t i, j;
  104.  
  105.    for (i = 0; i < temp.matrix_size; i++)
  106.       for (j = 0; j < temp.matrix_size; j++)
  107.          temp.put_value (i, j, m1.elem (i,j) + m2.elem (i,j));
  108.  
  109.    return  temp;
  110. }
  111.  
  112. void matrix::operator= (matrix &m)
  113. {
  114.    size_t i,j;
  115.    int value;
  116.    int row, column;
  117.  
  118.    matrix_size = m.matrix_size;
  119.  
  120.    for (i = 0; i < matrix_size; i++)
  121.        for (j = 0; j < matrix_size; j++)
  122.           put_value (i,j, m.elem (i,j));
  123. }
  124.  
  125.  
  126. int main (void)
  127. {
  128.    matrix my_matrix (3,1,2,3,
  129.                        4,5,6,
  130.                        7,8,9);
  131.  
  132.    matrix your_matrix (3,1,1,1,
  133.                          1,1,1,
  134.                          1,1,1);
  135.  
  136.    matrix our_matrix (3,1,0);
  137.  
  138.    cout << "\nHello world\n\n";
  139.  
  140.    my_matrix.print_matrix ();
  141.    your_matrix.print_matrix ();
  142.  
  143.    cout << "\n--------------------------------------\n";
  144.  
  145.    (my_matrix+your_matrix).print_matrix ();
  146.    our_matrix.print_matrix ();
  147.    my_matrix.print_matrix ();
  148.    your_matrix.print_matrix ();
  149.    getch ();
  150.  
  151.    return 0;
  152. }
  153.  
  154.  
  155.